/**
 *
 * @authors
 * @gulp配置文件
 * @date    2016-06-20 15:46:21
 * @version $1.0$
 */

//引入gulp
var gulp = require('gulp');

//引入组件
var jshint = require('gulp-jshint');//js检测
var less = require('gulp-less');//less编译
var concat = require('gulp-concat');//文件合并
var uglify = require('gulp-uglify');//js压缩
var rename = require('gulp-rename');//文件重命名
var cssmin = require('gulp-minify-css');//css压缩
var cssver = require('gulp-make-css-url-version');//css引用增加版本
var rev = require('gulp-rev');//对文件加MD5后缀
var revCollector = require('gulp-rev-collector');//路径替换
var imgmin = require('gulp-imagemin');//图片压缩
var pngcrush = require('imagemin-pngcrush');

//当编译less发生异常时提示错误
var notify = require('gulp-notify');
var plumber = require('gulp-plumber');

//检查脚本
gulp.task('lint',function(){
	gulp.src('./pre/js/*.js')
		.pipe(jshint())
		.pipe(jshint.reporter('default'));
});

//编译less
gulp.task('less',function(){
	gulp.src('./pre/less/*.less')
		.pipe(plumber({errorHandler: notify.onError('Error: <%= error.message %>')}))
		.pipe(less())
		.pipe(gulp.dest('./dist/css'));
});

//合并，压缩文件
gulp.task('scripts',function(){
	gulp.src('./pre/js/*.js')
		// .pipe(concat('all.js'))
		// .pipe(gulp.dest('./dist/js'))
		.pipe(rename({suffix:'.min'}))
		.pipe(uglify())
		.pipe(gulp.dest('./dist/js'));
});

//压缩css文件并生成版本号
gulp.task('mincss',function(){
	gulp.src('./pre/css/*.css')
		.pipe(cssmin({
			advanced: false, //boolean类型，默认true.选择是否开启高级优化（合并选择器等）
			compatibility:'ie7',//保留ie7及以下兼容写法 类型：String 默认：''or'*' [启用兼容模式； 'ie7'：IE7兼容模式，'ie8'：IE8兼容模式，'*'：IE9+兼容模式]
			keepBreaks: true,//booleam类型，默认false.选择是否保留换行
			keepSpecialComments:'*'//保留所有特殊前缀 当你用autoprefixer生成的浏览器前缀，如果不加这个参数，有可能将会删除你的部分前缀
		}))
		.pipe(rev())
		.pipe(cssver()) //给css里的引用文件加版本号
		.pipe(gulp.dest('./dist/css'));
});

// 压缩图片
gulp.task('minimg',function(){
	gulp.src('./pre/img/*')
		.pipe(imgmin({
			progressive: true,
			svgoPlugins: [{removeViewBox: false}],
        	use: [pngcrush()]
		}))
		.pipe(gulp.dest('./dist/img'));
});

//默认任务
gulp.task('default',function(){
	// gulp.run('lint','less','scripts','mincss','minimg');
	gulp.run('less');

	//监听文件变化
	// gulp.watch('./pre/less/*.less',function(){
	// 	gulp.run('lint','less','scripts');
	// });

	gulp.watch('./pre/less/*.less',['less']);
});
